//0xc00 bytes (sizeof)
struct _CMHIVE
{
struct _HHIVE Hive; //0x0
VOID* FileHandles[6]; //0x400
struct _LIST_ENTRY NotifyList; //0x418
struct _LIST_ENTRY HiveList; //0x420
struct _LIST_ENTRY PreloadedHiveList; //0x428
struct _EX_RUNDOWN_REF HiveRundown; //0x430
struct _CM_KEY_HASH_TABLE_ENTRY* KcbCacheTable; //0x434
ULONG KcbCacheTableSize; //0x438
struct _CM_KEY_HASH_TABLE_ENTRY* DeletedKcbTable; //0x43c
ULONG DeletedKcbTableSize; //0x440
ULONG Identity; //0x444
struct _CMSI_RW_LOCK HiveLock; //0x448
struct _RTL_BITMAP FlushDirtyVector; //0x44c
ULONG FlushDirtyVectorSize; //0x454
struct CMP_OFFSET_ARRAY* FlushLogEntryOffsetArray; //0x458
ULONG FlushLogEntryOffsetArrayCount; //0x45c
ULONG FlushLogEntrySize; //0x460
ULONG FlushHiveTruncated; //0x464
UCHAR FlushBaseBlockDirty; //0x468
struct _RTL_BITMAP CapturedUnreconciledVector; //0x46c
ULONG CapturedUnreconciledVectorSize; //0x474
struct CMP_OFFSET_ARRAY* UnreconciledOffsetArray; //0x478
ULONG UnreconciledOffsetArrayCount; //0x47c
struct _HBASE_BLOCK* UnreconciledBaseBlock; //0x480
struct _EX_PUSH_LOCK SecurityLock; //0x484
ULONG LastShrinkHiveSize; //0x488
union _LARGE_INTEGER ActualFileSize; //0x490
union _LARGE_INTEGER LogFileSizes[2]; //0x498
struct _UNICODE_STRING FileFullPath; //0x4a8
struct _UNICODE_STRING FileUserName; //0x4b0
struct _UNICODE_STRING HiveRootPath; //0x4b8
ULONG SecurityCount; //0x4c0
ULONG SecurityCacheSize; //0x4c4
LONG SecurityHitHint; //0x4c8
struct _CM_KEY_SECURITY_CACHE_ENTRY* SecurityCache; //0x4cc
struct _LIST_ENTRY SecurityHash[64]; //0x4d0
ULONG UnloadEventCount; //0x6d0
struct _KEVENT** UnloadEventArray; //0x6d4
struct _CM_KEY_CONTROL_BLOCK* RootKcb; //0x6d8
UCHAR Frozen; //0x6dc
struct _CM_WORKITEM* UnloadWorkItem; //0x6e0
struct _CM_WORKITEM UnloadWorkItemHolder; //0x6e4
struct _CM_DIRTY_VECTOR_LOG DirtyVectorLog; //0x6f8
ULONG Flags; //0x980
struct _LIST_ENTRY TrustClassEntry; //0x984
ULONGLONG DirtyTime; //0x990
ULONGLONG UnreconciledTime; //0x998
struct _CM_RM* CmRm; //0x9a0
ULONG CmRmInitFailPoint; //0x9a4
LONG CmRmInitFailStatus; //0x9a8
struct _KTHREAD* CreatorOwner; //0x9ac
struct _KTHREAD* RundownThread; //0x9b0
union _LARGE_INTEGER LastWriteTime; //0x9b8
struct _HIVE_WRITE_WAIT_QUEUE FlushQueue; //0x9c0
struct _HIVE_WRITE_WAIT_QUEUE ReconcileQueue; //0x9c8
union
{
ULONG FlushFlags; //0x9d0
struct
{
ULONG PrimaryFilePurged:1; //0x9d0
ULONG DiskFileBad:1; //0x9d0
};
};
ULONG PrimaryFileSizeBeforeLastFlush; //0x9d4
volatile LONG ReferenceCount; //0x9d8
LONG UnloadHistoryIndex; //0x9dc
ULONG UnloadHistory[128]; //0x9e0
ULONG BootStart; //0xbe0
ULONG UnaccessedStart; //0xbe4
ULONG UnaccessedEnd; //0xbe8
ULONG LoadedKeyCount; //0xbec
volatile ULONG HandleClosePending; //0xbf0
struct _EX_PUSH_LOCK HandleClosePendingEvent; //0xbf4
UCHAR FinalFlushSucceeded; //0xbf8
struct _CMP_VOLUME_CONTEXT* VolumeContext; //0xbfc
};